

<!-- 
  组件 的 分离写法

  1. <script>脚本 添加type
  2. <template> 标签
-->

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <!-- 使用 全局组件 -->
    <cpn1>全局组件</cpn1>

    <hr>
    <cpn1>全局组件</cpn1>

    <hr>
    <cpn1>全局组件</cpn1>
  </div>


  <template id='cpn'>
    <div>
      <h3>当前计数：{{counter}}</h3>
      <!-- <button @click='counter++'>+</button>
      <button @click='counter--'>-</button> -->

      <button @click='increment'>+</button>
      <button @click='decremnt'>-</button>
    </div>
  </template>

  <script src="../../js/vue.js"></script>
  <script>

    // 【*】如果想要复用的组件，使用同以结果
    // const errorData = { counter: 0}

   //注册组件 - 添加分离组件的id 全局
    Vue.component('cpn1', {
      template:'#cpn',
      data: function() {
        return {
          counter: 0,
        }
        
        // 【*】如果想要复用的组件，使用同以结果
        // return errorData;
      },
      methods: {
        increment() {
          this.counter++
        },
        decremnt() {
          this.counter--
        }
      }
    })

    // root == Vue实例
    const app = new Vue({
      el: '#app',
      data: { //root 键值对
      },
    })
  </script>

  <script>
    // 模版中的data 是函数返回的原因
    function abc() {
      return {
        name: 'a',
        age: 1
      }
    }

    let obj1 = abc()
    let obj2 = abc()
    let obj3 = abc()

    obj1.name = 'srx'

    console.log(obj2)
    console.log(obj3)

    console.log('')
    console.log('下面是问题所在')
    // ----------------
    // 看下错 在哪里
    const obj = {
      name: 'a',
      age: 1
    }

    function abcdddd() {
      return obj
    }

    let obj21 = abcdddd()
    let obj22 = abcdddd()
    let obj23 = abcdddd()

    obj21.name = '1-1-1-1-1'

    console.log(obj22)
    console.log(obj23)
  </script>
</body>
</html>